/**
 * Clases que aparecen en el código
 * @author paco
 */
public class SimboloClase extends Simbolo
{
	private boolean constructor;
	
	private boolean main;

	/**
	 * Constructor
	 * @param nombre Nombre de la clase
	 * @param tipo 
	 */
	public SimboloClase(String nombre, Tipo tipo)
	{
		super(nombre, tipo);
		constructor = false;
		main = false;
	}
	
	public boolean isConstructor()
	{
		return constructor;
	}

	public void setConstructor()
	{
		this.constructor = true;
	}
	
	public boolean hasMain()
	{
		return main;
	}

	public void setMain()
	{
		this.main = true;
	}
	
	
	public void setTablaSimbolos( TablaSimbolos ts )
	{
		((TipoClase)this.tipo).setTablaSimbolos(ts);
	}
	
	@Override
	public String toString()
	{
		StringBuilder sb = new StringBuilder();
		
		sb.append(".class '").append(this.nombre).append("' extends [mscorlib]System.Object\n{\n");
		if ( !constructor )
		{
			sb.append(".method public specialname rtspecialname instance void .ctor() cil managed\n{\n");
			sb.append("\t.maxstack 2\n");
			sb.append("\tldarg 0\n");
			sb.append("\tcall instance void [mscorlib]System.Object::.ctor()\n");
			sb.append("\tret\n}\n");
		}
		
		return sb.toString();
	}
	
}
